package com.lanmao.emc.strategy;

import com.lanmao.emc.enums.UpgradeType;
import org.springframework.beans.factory.InitializingBean;

/**
 * 描述：
 *
 * @author lanmao
 * @since 2024年11月11日 20:42
 */
public interface UpgradeStrategy extends InitializingBean {
    /**
     * 升级策略
     */
    void upgradeIndex();

    /**
     * 回滚策略
     * @param index 索引
     * @param version 需要回滚的版本
     */
    void rollback(String index, String version);

    /**
     * 初始化表逻辑
     */
    void initTable();

    @Override
    default void afterPropertiesSet() {
        UpgradeStrategyFactory.UPGRADE_STRATEGY_MAP.put(getUpgradeType(), this);
    }


    UpgradeType getUpgradeType();
}